import time
import random
game_state = 'space'
stonelist = ['铁陨石','石铁陨石','石陨石','玻璃陨石']
def crash_to_Mars():
    global game_state
    print("飞船的防御系统及时启动，在目标距离飞船800米时拦截。但剩余的碎片依然击中了船体。")
    time.sleep(2)
    print("警报声再次响起。主控台显示，飞船前端受撞击程度非常大，不过冗余单元及时投入，防止了电源短路引起的大爆炸。但飞船能源所剩不多，必须紧急迫降火星。")
    time.sleep(1)
    print("你点击了确定按钮。")
    time.sleep(2)
    print("砰！飞船降落在了火星乌托邦平原。")
    direction = 3
    science = 1
    save = 2
    direct = '乌托邦平原'
    crash_at_Mars(direction, science, save,direct)
    game_state = 'Mars'

def save_to_Mars(event):
    global game_state
    if event == '1':
        print("你使用舰炮清除了小行星。现在距离火星256万千米，马上就要到了，你开始准备着陆。")
    else:
        print("你操纵飞船躲避了小行星。现在距离火星256万千米，马上就要到了，你开始准备着陆。")
    time.sleep(2)
    print("现在是时候了。到底要在哪里着陆呢？")

    direct = input(
        "1火星乌托邦平原（地形平坦，便于行走及火星车行驶） 2惠更斯坑（面积较大，方便进行科研，且相对较安全） 3第勒尼安山脊（适宜科研，但出行不便）")
    while direct == '':
        print("输入不正确哦！")
        direct = input(
            "1火星乌托邦平原（地形平坦，便于行走及火星车行驶） 2惠更斯坑（面积较大，方便进行科研，且相对较安全） 3第勒尼安山脊（适宜科研，但出行不便）")
    if direct == '1':
        direction = 3
        science = 1
        save = 2
        direct = '乌托邦平原'
    elif direct == '2':
        direction = 2
        science = 2
        save = 3
        direct = '惠更斯坑'
    else:
        direction = 1
        science = 3
        save = 1
        direct = '第勒尼安山脊'
    game_state = 'Mars'
    save_at_Mars(direction, science, save, direct)

def crash_at_Mars(direction, science, save, direct):
    global game_state
    day = 1
    hq = 0
    items = 2
    print("下面是你的航天日记摘选：")
    print(f"今天是登陆火星的第{day}天。")
    time.sleep(2)
    print("这里是乌托邦平原，地形很平坦，一望无际，就是没有发现什么可以值得研究的。从今天起，我要坚持记日记，直到我坐着座位乘着飞船回地球——或是装在骨灰盒里乘着飞船回地球。")
    print("第一章节：火星基地建造")
    print("目标：资源值达到30，建成火星基地；生命值大于0，生存下去")
    Mars(save,science,direct,day,items)



def save_at_Mars(direction, science, save, direct):
    global game_state
    day = 1
    hq = 0
    items = 5
    print("下面是你的航天日记摘选：")
    time.sleep(1)
    print(f"今天是登陆火星的第{day}天。")
    time.sleep(1)
    print("这里，就是火星！从今天起，我要坚持记日记，直到我坐着座位乘着飞船回地球——或是装在骨灰盒里乘着飞船回地球。")
    print("第一章节：火星基地建造")
    print("目标：资源值达到30，建成火星基地；生命值大于0，生存下去")
    if game_state == 'Mars':
        Mars(save,science,direct,day,items)

        if items >= 20 and science >= 40:
            print("最后一步：")
            print("一切准备就绪。你站在火星基地的控制台前，心中充满了感慨。现在，你要控制设备改造火星上的各种数据。")
            while True:
                try:
                    val1 = int(input("请输入大气中的氧气浓度（例如：20）【范围：0-100%】："))
                    val2 = int(input("请输入平均温度（例如：18）【范围：0-75】："))
                    val3 = int(input("请输入液态水含量（例如：22）【范围：0-120】："))
                    break
                except:
                    print("输入不正确哦！")
                    val1 = int(input("请输入大气中的氧气浓度（例如：20）【范围：0-100%】："))
                    val2 = int(input("请输入平均温度（例如：18）【范围：0-75】："))
                    val3 = int(input("请输入液态水含量（例如：22）【范围：0-120】："))
            if val1 > 15 and val1 < 50 and val2 > 10 and val2 < 35 and val3 > 20 and val3 < 40:
                time.sleep(4)
                print("尾声")
                print("经过你的不懈努力，改造了火星环境，人类携同其他地球生命来到火星，在这里，繁衍生息。红色的荒漠上如今鸟语花香，回荡着孩子们天真的笑声......")
                print("（游戏将于50秒后退出）")
                time.sleep(50)
                return 0
            else:
                print("改造失败，火星已不适宜地球生命居住，游戏失败！")
                print("（游戏将于50秒后退出）")
                time.sleep(50)
                return 0






def Mars(save, direct, science, day, items):
    global game_state
    science = 2
    save += 2
    address = direct
    hq = 0
    while True:
        day += 1
        save += 1
        items += 1
        time.sleep(2)
        print(f"今天是登陆火星的第{day}天。")
        if random.randint(1, 4) == 1:
            time.sleep(1)
            print("矿产探测仪显示，在我脚下有一片丰富的矿区。我想我可以去下面采一点矿石，用来应急。")
            event2 = input("你的选择是？（1开采矿石）（2不愿冒险，返回飞船生活舱）")
            while event2 == '':
                print("输入不正确哦！")
                event2 = input("你的选择是？（1开采矿石）（2不愿冒险，返回飞船生活舱）")
            if event2 == '1':
                print("此次矿石开采很顺利，我开采到了许多有用的铁，铜等矿石")
                items += 2
                print("资源值：", items)
                print("科研值：", science)
                print("生命值：", save)
            else:
                print("我返回了飞船生活舱，进行休整。")
                save += 1
                science += 1
                print("资源值：", items)
                print("科研值：", science)
                print("生命值：", save)
        elif random.randint(1, 4) == 2:
            time.sleep(1)
            print(
                f"今天，我一整天都在闲逛。我找到了几块褐色的石头，鉴定为{random.randint(560,9980)}万年前撞击这里的{random.choice(stonelist)}残片。我要带回去好好研究研究。")
            event3 = input("你的选择是？（1继续寻找陨石残片）（2回到飞船实验室进行研究）")
            while event3 == '':
                print("输入不正确哦！")
                event3 = input("你的选择是？（1继续寻找陨石残片）（2回到飞船实验室进行研究）")
            if event3 == 1:
                print(
                    "我继续在这里寻找，但是运气很不好，没有找到。而且火星车的能源也耗尽了。最可怕的是，我好像迷路了。还好我身上带着足够的水和食物，但愿我没事。")
                day += 5
                time.sleep(4)
                print("五天了！我终于回来了。虽然找到了非常多的残片，但是我发誓，再也不出去瞎逛了。")
                if save > 10:
                    save -= 10
                else:
                    save = 0
                if items > 4:
                    items -= 4
                else:
                    items = 0
                science += 10
                print("资源值：", items)
                print("科研值：", science)
                print("生命值：", save)
            else:
                time.sleep(1)
                print("我回到了飞船。今天的收获还是蛮不错的。")
                print("资源值：", items)
                print("科研值：", science)
                print("生命值：", save)
            science += 1
        elif random.randint(1, 4) == 3:
            time.sleep(1)
            print("今天刮了一场大风，不得已只能躲在飞船内。风停后，我发现许多矿石和一些食物已不知去向——我忘了收走他们。")
            if save > 6:
                save -= 6
            else:
                save = 0
            if items > 1:
                items -= 1
            else:
                items = 0
            print("资源值：", items)
            print("科研值：", science)
            print("生命值：", save)
        else:
            time.sleep(1)
            print("今天天气很好，我没有再出去，一天时间花在整理飞船内部的物资和搞科研，还睡了个午觉。")
            save += 1
            items += 1
            print("资源值：", items)
            print("科研值：", science)
            print("生命值：", save)
        if save <= 0:
            print("啊。。。看来你没有保护好自己。游戏失败！")
            break
        if items >= 30 and hq == 0:
            print("大功告成！飞船上的设备和在火星上收集的资源都已完备，即刻开始建造火星基地！")
            day += 25
            time.sleep(5)
            print(f"在你登陆火星的第{day}天，你建成了火星基地。")
            hq = 1
            game_state = 'hq_Mars'
            print("第二章节：资源储备")
            print("目标：食物储量达到950，淡水储量达到1000；建成蔬菜大棚；制造淡水合成装置；生命值大于0，生存下去")
            hq_Mars(save,direct,science,day)
            return 0


def hq_Mars(save, direct, science, day):
    global game_state
    water = 0
    each_water = 0
    vegetable = 0
    each_vegetable = 0
    items = 40
    print("水源告急！目前飞船里的水所剩不多，我还有3天的时间来建造一个淡水合成装置。")
    time.sleep(1)
    print("众所周知，水的化学式是H2O，一个水分子是由两个氢原子和一个氧原子组成的，而飞船上正好有合成他们的仪器，所以现在只需要再将氢和氧进行结合就可以了。")
    print("不过，需要小心它们结合是产生的爆炸，但是现有仪器的材料足以抵抗这些爆炸。")
    time.sleep(1)
    day += 2
    print("两天后，我造成了淡水合成装置。它看上去像一个大水桶。我喝了一口水。太淡了！这样合成的水中没有微生物，但是我在飞船上还培养了一些，想喝的时候直接把培养皿往杯子上扣一下就行了。")
    each_water += 10
    water_choice = input("现在淡水资源已经完备。你的选择是？（1多做几个，有备无患）（2不再制作合成装置）")
    while water_choice == '':
        print("输入不正确哦！")
        water_choice = input("现在淡水资源已经完备。你的选择是？（1多做几个，有备无患）（2不再制作合成装置）")
    if water_choice == '1':
        time.sleep(1)
        items -= 30
        day += 4
        print("这几天，我又做了9个合成装置，一共10个，整齐的排列在基地旁。淡水自由！")
        each_water += 80
    else:
        print("一个合成装置已经够了，剩下的资源我还要留着去建别的装置呢。")
    print("现在淡水也已经不用愁了，现在的目标是改善伙食！")
    print("天天吃自热方便面，我已经受够这样的日子了！所以，我要种菜！")
    time.sleep(2)
    day += 2
    print("我用飞船上不用的合成材料建了一个蔬菜大棚。这种材料加上智能芯片的调节，可以根据光照智能调节大棚内温度。")
    print("我先用一部分地球的土壤铺了地面，打算种土豆。这种土豆是经过航天育种部门基因改造的，生长几块，可以适应各种环境。我现在种下去，大约10天就可以吃上了。")
    time.sleep(2)
    day += 10
    print("说来正巧，当土豆成熟的那一天，刚好也是我方便面告罄的一天。我用多功能厨灶给自己做了个“土豆炖土豆”。菜倒是蛮香的，就是有点咸。")
    vegetable += 30
    vegetable_choice = input("现在食物资源已经完备。你的选择是？（1改造大棚内火星土壤，提高产量）（2不再改造土壤）")
    while vegetable_choice == '':
        print("输入不正确哦！")
        vegetable_choice = input("现在食物资源已经完备。你的选择是？（1改造大棚内火星土壤，提高产量）（2不再改造土壤）")
    if vegetable_choice == '1':
        print("我在土壤里添加了土壤松弛剂，这样，大棚里就可以种一些扎根比较深的蔬菜了。")
        each_vegetable += 60
        items -= 5
    else:
        print("这点土壤已经够了，剩下的时间我还要留着去干别的事情呢。")
        each_vegetable += 20
    while True:
        day += 1
        save += 1
        water += each_water
        water -= 5
        vegetable += each_vegetable
        vegetable -= 8
        vegetable
        time.sleep(1)
        print(f"今天是登陆火星的第{day}天。")
        
        if random.randint(1,3) == 1:
            print("今天我打理了一下蔬菜大棚，收获了一些已经成熟的菜。")
            vegetable += 40
            save += 3
            each_vegetable += 10
            print("生命值：",save)
            print("淡水资源：", water)
            print("食物资源：", vegetable)
            print("淡水产量：",each_water)
            print("食物产量",each_vegetable)
        elif random.randint(1,3) == 2:
            print("今天刮了一场大风，飞沙走石，日落时才停。我去看了一眼蔬菜大棚，发现大棚破了个洞，里面的菜冻得都快结冰了。我修好了破洞。")
            items -= 1
            each_vegetable -= 4
            save -= 4
            vegetable -= 30
            print("生命值：",save)
            print("淡水资源：", water)
            print("食物资源：", vegetable)
            print("淡水产量：",each_water)
            print("食物产量",each_vegetable)
        elif random.randint(1,3) == 3:
            print("今天风和日丽，我在闲暇时间开动机器，在空气中继续制造氢和氧。")
            science += 3
            save += 3
            each_vegetable += 1
            print("生命值：",save)
            print("淡水资源：", water)
            print("食物资源：", vegetable)
            print("淡水产量：",each_water)
            print("食物产量",each_vegetable)
        if save <= 0:
            print("啊。。。看来你没有保护好自己。游戏失败！")
            break
        if water >= 1000 and vegetable >= 950:
            print("最后一步：")
            print("一切准备就绪。你站在火星基地的控制台前，心中充满了感慨。现在，你要控制设备改造火星上的各种数据。")
            while True:
                try:
                    val1 = int(input("请输入大气中的氧气浓度（例如：20）【范围：0-100%】："))
                    val2 = int(input("请输入平均温度（例如：18）【范围：0-75】："))
                    val3 = int(input("请输入液态水含量（例如：22）【范围：0-120】："))
                    break
                except:
                    print("输入不正确哦！")
                    val1 = int(input("请输入大气中的氧气浓度（例如：20）【范围：0-100%】："))
                    val2 = int(input("请输入平均温度（例如：18）【范围：0-75】："))
                    val3 = int(input("请输入液态水含量（例如：22）【范围：0-120】："))
            if val1 > 15 and val1 < 50 and val2 > 10 and val2 < 35 and val3 > 20 and val3 < 40:
                time.sleep(3)
                print("尾声")
                print("经过你的不懈努力，改造了火星环境，人类携同其他地球生命来到火星，在这里，繁衍生息。红色的荒漠上如今鸟语花香，回荡着孩子们天真的笑声......")
                print("（游戏将于50秒后退出）")
                time.sleep(50)
                return 0
            else:
                print("改造失败，火星已不适宜地球生命居住，游戏失败！")
                print("（游戏将于50秒后退出）")
                time.sleep(50)
                return 0
        
        time.sleep(3)
print("火星·家园 Mars·Home!")
time.sleep(3)
text = "⚠  公元4202年，由于地球环境被过度开发，你作为一名航天员即将前往火星开发环境，使其适于地球生命生存。"
print(text)
print("loading...")
time.sleep(2)
print("开始：")
print("下面是你的航天日记摘选：")
print("""9月12日
        飞船起飞了。这次任务，是去改进火星的环境，使其适宜地球生命生存。
        不过，我心里好没底啊。
        这已经不是第一次登陆火星了，但这么艰巨的任务还是第一次。
        这次任务所乘坐的飞船采用核聚变推进，必要时还可以启动曲率驱动进行空间跳跃。
        大概在15点左右，飞船飞越月球，距离火星约9000万千米。
        我应该打理一下飞船，先为登陆火星做好准备。""")
time.sleep(4)

event1 = input(
    "‘滴——’飞船发出了警报声。此时，飞船已经进入小行星带，前方约650千米出现集群小行星。你的选择是？（1发射舰炮清除小行星）（2操纵飞船躲避小行星）")
while event1 == '':
    print("输入不正确哦！")
    event1 = input(
        "‘滴——’飞船发出了警报声。此时，飞船已经进入小行星带，前方约650千米出现集群小行星。你的选择是？（1发射舰炮清除小行星）（2操纵飞船躲避小行星）")
if event1 == '1' or event1 == '2':
    save_to_Mars(event1)
else:
    crash_to_Mars()